// components/custom-form/index.js
import Toast from '../../miniprogram_npm/@vant/weapp/toast/toast';
Component({
    /**
     * 组件的属性列表
     */
    properties: {
        formList:{
            type:Array,
            value:[],
        },
        edit:{
          type:Boolean,
          value:false,
        },
    },
    observers:{
      formList(formList){
        if(formList&&formList.length>0){
          this.setData({
              formData:formList,
          })
      }
      }
    },
    lifetimes:{
        ready(){
            // 只是进来的时候赋值一次，以后修改formList的值都不会造成影响
            // let formList = this.data.formList
            // if(formList&&formList.length>0){
            //     this.setData({
            //         formData:formList,
            //     })
            // }
        }
    },
    /**
     * 组件的初始数据
     */
    data: {
        formData:[],
        tempFormData:[],
        active:0,
        num:0
    },

    /**
     * 组件的方法列表
     */
    methods: {
        // 修改传过来的表单列表数据
        modifyData(e){
          const {index,value} = e.detail
          const {formData,active} = this.data
          formData[active][index].value = value
          this.setData({
            formData
          })
          this.triggerEvent("modifydata",{val:value,activeIndex:active,index,formList:formData})
        },
        // 查询数据
        async getSearchData({detail:{data}}){
          let {active,formData} = this.data
          formData[active].forEach(item=>{
            const key  = Object.keys(data).find(item2=>item.dockData&&item2==item.fieldName)
            key&&(item.value = data[key])
          })
          this.setData({
            formData
          })
          this.triggerEvent("modifydata",{formList:formData})
        },
        // 校验数据
        validate(){
          let flag = false
          let formData = this.data.formData
          if(formData.length==1){
            flag = formData[0].some(item=>{
              if(item.requiredFlag&&!item.value){
                Toast.fail("请把"+item.attrName+"补充完整")
                return true
              }
            })
          }
          
          if(formData.length>1){
            flag = this.data.formData.every(item=>{
              return item.some(item2=>item2.requiredFlag&&!item2.value)
            })
            if(flag){
              Toast.fail("至少一个填写方式填写完整")
            }
          }
          
          return !flag
        },
        onChange(e){
          this.setData({
            active:e.detail.index
          })
        },
    }
})